import Vue from 'vue'
import VueRouter from 'vue-router'
import { formatRoutes } from './config'
import { baseRoutes, errorRoutes } from './baseRoutes'
import setupGuard from './guard'

Vue.use(VueRouter)

// 只自动引入modules下的所有index.js文件,所以一个route模块需要单独文件夹
// 此举出于面对某个route复杂需要进一步解耦出更多js文件的情况下也只会引入index.js
const req = require.context('./moudles', true, /index.js$/)
let routes = []
req.keys().forEach((path) => routes.push(req(path).default))

// 保证路由的顺序
routes = routes.concat(baseRoutes, errorRoutes)

formatRoutes(routes)

const router = new VueRouter({
  mode: process.env.VUE_APP_ROUTER_MODE,
  routes
})

setupGuard(router)

export default router

/*
interface RouteMeta {
  title: string //当该路由为menu项时，指定菜单项名
  docTitle: string //指定跳转到该路由时的html文档title前缀，若无则会尝试使用title字段，皆无则不改变
  hideTab?: boolean //当为true时，将不会在对应层级的菜单中渲染为菜单项，默认为undefined
  icon?: string //指定iconify或element-ui的icon名，如果是作为navBar的menu则无效
  order?: number //指定顺序，数值越大越靠前，默认为0
}
*/
